#include <stdio.h>
#include <string.h>
#include "main.h"
#include "rezerwacje.h"

void rezerwuj(MIEJSCE *msc, FILE *rezfile) {
	extern int licznik_miejsc;
	char pasazer[60];
	int nr_miejsca = 0;
	MIEJSCE *poczatek;
	poczatek = msc;

	if(licznik_miejsc < MIEJSCA) {
		printf("[INFO] Wcisnij [enter] na poczatku wiersza aby zakonczyc wprowadzanie danych.\n");
		printf("Imie i Nazwisko: ");
		while(licznik_miejsc < MIEJSCA && fgets(pasazer, 60, stdin) != NULL && pasazer[0] != '\n') {
			clear_str(pasazer);
			printf("Numer miejsca: ");
			while(scanf("%d", &nr_miejsca) == 0) {
				while(getchar() != '\n')
					continue;
				printf("Numer miejsca: ");
			}
			while(nr_miejsca > MIEJSCA && nr_miejsca < 1) {
				printf("Podaj numer z zakresu 1-12: ");
				while(scanf("%d", &nr_miejsca) == 0) {
					while(getchar() != '\n')
						continue;
					printf("Podaj numer z zakresu 1-12: ");
				}
			}
			while(sprawdz_czy_zajete(nr_miejsca, poczatek) == 1) {
				printf("Miejsce %d jest juz zajete. Wybierz inne: ", nr_miejsca);
				while(scanf("%d", &nr_miejsca) == 0) {
					while(getchar() != '\n')
						continue;
					printf("Podaj numer miejscowki: ");
				}
			}
			if(nr_miejsca > 1)
				msc = poczatek+(nr_miejsca-1);
			msc->id = nr_miejsca;
			msc->czy_zajete = 1;
			strcpy(msc->osoba, pasazer);
			licznik_miejsc++;
			fwrite(msc, sizeof(MIEJSCE), 1, rezfile);
			if(licznik_miejsc < MIEJSCA) {
				printf("Imie i Nazwisko: ");
				while(getchar() != '\n')
					continue;
			}
			else {
				printf("Lista jest juz pelna!\n");
				while(getchar() != '\n')
					continue;
			}
		}
	}
	else
		printf("Brak wolnych miejsc.\n");
}
void pokaz_rezerwacje(MIEJSCE *msc) {
	int nr;
	int i, j;
	MIEJSCE pasazer[MIEJSCA];
	MIEJSCE tmp;
	int pas_id = 0;

	if(licznik_miejsc > 0) {
		printf("Lista rezerwacji:\n");
		for(nr = 0; nr < MIEJSCA; nr++, msc++)
			if(msc->czy_zajete == 1) {
				pasazer[pas_id].id = msc->id;
				strcpy(pasazer[pas_id++].osoba, msc->osoba);
			}
		for(i = 0; i < pas_id; i++)
			for(j=i; j < pas_id; j++)
				if(strcmp(pasazer[i].osoba, pasazer[j].osoba) > 0) {
					tmp = pasazer[i];
					pasazer[i] = pasazer[j];
					pasazer[j] = tmp;
				}
		for(nr = 0; nr < pas_id; nr++)
			printf("Pasazer: %s, Miejsce: %d\n", pasazer[nr].osoba, pasazer[nr].id);
	}
	else
		printf("Nie dokonano jeszcze zadnych rezerwacji\n");
}
void kasuj(MIEJSCE *msc, FILE *rezfile) {
	MIEJSCE *poczatek;
	char pasazer[60];
	int nr, id;
	int znalazl = 0;
	extern int licznik_miejsc;
	poczatek = msc;

	printf("Szukaj pasazera: ");
	scanf("%s", pasazer);
	for(nr = 0; nr < MIEJSCA; nr++, msc++)
		if(msc->czy_zajete == 1 && strstr(msc->osoba, pasazer) != NULL) {
			printf("ID: %d %s, Miejsce: %d\n", nr, msc->osoba, msc->id);
			znalazl++;
		}
	if(znalazl > 0) {
		printf("Podaj ID rezerwacji: ");
		scanf("%d", &id);
		msc = poczatek + id;
		msc->czy_zajete = 0;
		licznik_miejsc--;
		printf("Rezerwacja skasowana.\n");
	}
	else
		printf("%s nie posiada aktywnej rezerwacji.\n", pasazer);
	fclose(rezfile);
	rezfile = fopen("rezerwacje.dat", "wb");
	rewind(rezfile);
	msc = poczatek;
	for(nr=0; nr < MIEJSCA; nr++, msc++)
		if(msc->czy_zajete == 1)
			fwrite(msc, sizeof(MIEJSCE), 1, rezfile);
	while(getchar() != '\n')
		continue;
}
